﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Configuration;
using log4net;

namespace TheBullysStore.Models.ModuloVentas.Duenio
{
    public class DuenioDAO
    {
        private static ILog log = LogManager.GetLogger(typeof(DuenioDAO));
        public string mantenerDuenio(DuenioBean duenio)
        {
            //******************************************************************
            //******************************************************************

            string mensaje = "";
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            string commandString = "";
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            SqlCommand sqlCmd;
            sqlCon.Open();

            try
            {

                if (duenio.accion == 1)
                {
                    //inserto consumo de agua
                    commandString = "INSERT INTO duenio (DNI,Estado,Nombres,Apellidos,Correo,Telefono)values('" + duenio.dni + "',1,'" + duenio.nombres + "','" + duenio.apellidos + "','" + duenio.correo + "','" + duenio.telefono + "')";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    mensaje = "Se inserto el Duenio correctamente";
                }
                if (duenio.accion == 2)
                {
                    commandString = "update duenio set DNI = "+ duenio.dni +",Nombres = '"+duenio.nombres+"',Apellidos = '"+duenio.apellidos+"',Correo = '"+duenio.correo+"',Telefono='"+duenio.telefono+ "' where id_duenio = " + duenio.Id_Duenio;
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    mensaje = "Se Modifico el Duenio correctamente";
                    //int x;
                    //commandString = "select count(*) from Consumo_De_Agua where id_consumo ='" + consumoAgua.Id_Consumo + "' and costo is null";
                    //sqlCmd = new SqlCommand(commandString, sqlCon);
                    //if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    //{
                    //    x = (int)sqlCmd.ExecuteScalar();
                    //}
                    //else
                    //{

                    //    x = 0;
                    //}
                    //if (x != 0)
                    //{
                    //    commandString = "update Consumo_De_Agua set registro_final='" + consumoAgua.registro_final + "' where Id_Consumo='" + consumoAgua.Id_Consumo + "'";
                    //    sqlCmd = new SqlCommand(commandString, sqlCon);
                    //    sqlCmd.ExecuteNonQuery();
                    //    mensaje = "Se modifico el Consumo de Agua correctamente";
                    //}
                    //else mensaje = "No esta permitido modificar este Consumo de Agua";

                }
                if (duenio.accion == 3)
                {
                    //int x;
                    //commandString = "select count(*) from Consumo_De_Agua where id_consumo ='" + consumoAgua.Id_Consumo + "' and costo is null";
                    //sqlCmd = new SqlCommand(commandString, sqlCon);
                    //if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    //{
                    //    x = (int)sqlCmd.ExecuteScalar();
                    //}
                    //else
                    //{

                    //    x = 0;
                    //}
                    //if (x != 0)
                    //{
                    commandString = "update duenio set estado='" + 0 + "' where Id_Duenio='" + duenio.Id_Duenio + "'";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    mensaje = "Se Elimino el Duenio correctamente";
                    //}
                    //else mensaje = "No esta permitido Eliminar este Consumo de Agua";

                }
                sqlCon.Close();
            }

            catch (Exception ex)
            {
                log.Error("mantener Duenio(EXCEPTION): ", ex);
                throw ex;
                if (duenio.accion == 3)
                {
                    mensaje = "No se pudo eliminar el Duenio correctamente";

                }
                if (duenio.accion == 1)
                {
                    mensaje = "No se pudo insertar el Duenio correctamente";
                }
                if (duenio.accion == 2)
                {
                    mensaje = "No se pudo modificar el Duenio correctamente";
                }
                sqlCon.Close();
                return mensaje;
            }
            finally {
                sqlCon.Close();
            }
            return mensaje;
        }
        public List<DuenioBean> buscarDuenio(DuenioBean duenio)
        {
            
                List<DuenioBean> listaDuenio = new List<DuenioBean>();
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();
                try
                {
                
                string commandString = "";
                //if (duenio.id_cargo == 7){
                //    commandString = "SELECT a.Id_Duenio,a.DNI,a.Nombres,a.Estado,a.Apellidos,a.Correo,a.Telefono FROM duenio a,propiedad_en_venta b where a.estado = 1 and a.Id_Duenio = b.Id_Dueno AND a.dni like '%" + duenio.dni + "%' AND b.id_propiedad like '%" + duenio.id_propiedad + "%'";
                //}else{
                    if ((duenio.id_propiedad != 0) && (duenio.dni != null)){
                        commandString = "SELECT a.Id_Duenio,a.DNI,a.Nombres,a.Estado,a.Apellidos,a.Correo,a.Telefono FROM duenio a,propiedad_en_venta b where a.estado = 1 and a.Id_Duenio = b.Id_Dueno AND a.dni like '%" + duenio.dni + "%' AND b.id_propiedad like '%" + duenio.id_propiedad + "%'";
                    }
                    else if (duenio.dni != null)
                    {
                        commandString = "Select * from duenio where estado = 1 and dni like '%" + duenio.dni + "%'";
                    }else{
                        commandString = "Select * from duenio where estado = 1";
                    }
                    
                //}
                
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                while (dataReader.Read())
                {
                    DuenioBean ddduenio= new DuenioBean();
                    ddduenio.Id_Duenio = Convert.ToString(dataReader["Id_Duenio"]);
                    ddduenio.dni = Convert.ToString(dataReader["DNI"]);
                    ddduenio.nombres = Convert.ToString(dataReader["Nombres"]);
                    ddduenio.estado = Convert.ToInt32(dataReader["Estado"]);
                    ddduenio.apellidos = Convert.ToString(dataReader["Apellidos"]);
                    ddduenio.correo = Convert.ToString(dataReader["Correo"]);
                    ddduenio.telefono = Convert.ToString(dataReader["Telefono"]);
                    listaDuenio.Add(ddduenio);
                }
                dataReader.Close();
                sqlCon.Close();
                return listaDuenio;
            }
            catch (Exception ex)
            {
                log.Error("buscarDuenio(EXCEPTION): ", ex);
                throw ex;
            }
            finally {
                sqlCon.Close();
            }
        }
        public string mantenerCliente(DuenioBean duenio)
        {
            //******************************************************************
            //******************************************************************

            string mensaje = "";
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            string commandString = "";
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            SqlCommand sqlCmd;
            sqlCon.Open();

            try
            {

                if (duenio.accion == 1)
                {
                    //inserto consumo de agua
                    if (duenio.id_cargo == 7)
                    {
                        commandString = "INSERT INTO cliente (DNI,Estado,Nombres,Apellidos,Correo,Telefono,id_vendedor)values('" + duenio.dni + "',1,'" + duenio.nombres + "','" + duenio.apellidos + "','" + duenio.correo + "','" + duenio.telefono + "','" + duenio.id_persona + "')";
                    }
                    else
                    {
                        commandString = "INSERT INTO cliente (DNI,Estado,Nombres,Apellidos,Correo,Telefono)values('" + duenio.dni + "',1,'" + duenio.nombres + "','" + duenio.apellidos + "','" + duenio.correo + "','" + duenio.telefono + "')";
                    }
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    mensaje = "Se inserto el cliente correctamente";
                }
                if (duenio.accion == 2)
                {
                    commandString = "update cliente set DNI = " + duenio.dni + ",Nombres = '" + duenio.nombres + "',Apellidos = '" + duenio.apellidos + "',Correo = '" + duenio.correo + "',Telefono='" + duenio.telefono + "' where id_cliente = " + duenio.Id_Duenio;
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    mensaje = "Se Modifico el cliente correctamente";
                    //int x;
                    //commandString = "select count(*) from Consumo_De_Agua where id_consumo ='" + consumoAgua.Id_Consumo + "' and costo is null";
                    //sqlCmd = new SqlCommand(commandString, sqlCon);
                    //if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    //{
                    //    x = (int)sqlCmd.ExecuteScalar();
                    //}
                    //else
                    //{

                    //    x = 0;
                    //}
                    //if (x != 0)
                    //{
                    //    commandString = "update Consumo_De_Agua set registro_final='" + consumoAgua.registro_final + "' where Id_Consumo='" + consumoAgua.Id_Consumo + "'";
                    //    sqlCmd = new SqlCommand(commandString, sqlCon);
                    //    sqlCmd.ExecuteNonQuery();
                    //    mensaje = "Se modifico el Consumo de Agua correctamente";
                    //}
                    //else mensaje = "No esta permitido modificar este Consumo de Agua";

                }
                if (duenio.accion == 3)
                {
                    //int x;
                    //commandString = "select count(*) from Consumo_De_Agua where id_consumo ='" + consumoAgua.Id_Consumo + "' and costo is null";
                    //sqlCmd = new SqlCommand(commandString, sqlCon);
                    //if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    //{
                    //    x = (int)sqlCmd.ExecuteScalar();
                    //}
                    //else
                    //{

                    //    x = 0;
                    //}
                    //if (x != 0)
                    //{
                    commandString = "update cliente set estado='" + 0 + "' where Id_Cliente='" + duenio.Id_Duenio + "'";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    mensaje = "Se Elimino el cliente correctamente";
                    //}
                    //else mensaje = "No esta permitido Eliminar este Consumo de Agua";

                }
                sqlCon.Close();
            }

            catch (Exception ex)
            {

                log.Error("mantenerCliente(EXCEPTION): ", ex);
                throw ex;

                if (duenio.accion == 3)
                {
                    mensaje = "No se pudo eliminar el Duenio correctamente";

                }
                if (duenio.accion == 1)
                {
                    mensaje = "No se pudo insertar el Duenio correctamente";
                }
                if (duenio.accion == 2)
                {
                    mensaje = "No se pudo modificar el Duenio correctamente";
                }
                sqlCon.Close();
                return mensaje;
            }
            finally
            {
                sqlCon.Close();
            }
            return mensaje;
        }
        public List<DuenioBean> buscarCliente(DuenioBean duenio)
        {
            
                List<DuenioBean> listaDuenio = new List<DuenioBean>();
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();
              try
              {
                string commandString;
                if (duenio.id_cargo == 7)
                {
                    commandString = "SELECT Id_Cliente,DNI,Nombres,Estado,Apellidos,Correo,Telefono FROM cliente where estado = 1 AND dni like '%" + duenio.dni + "%'" + " AND id_vendedor = '" + duenio.id_persona + "'";
                }
                else
                {
                    commandString = "SELECT Id_Cliente,DNI,Nombres,Estado,Apellidos,Correo,Telefono FROM cliente where estado = 1 AND dni like '%" + duenio.dni + "%'";
                }
                
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                while (dataReader.Read())
                {
                    DuenioBean ddduenio = new DuenioBean();
                    ddduenio.Id_Duenio = Convert.ToString(dataReader["Id_Cliente"]);
                    ddduenio.dni = Convert.ToString(dataReader["DNI"]);
                    ddduenio.nombres = Convert.ToString(dataReader["Nombres"]);
                    ddduenio.estado = Convert.ToInt32(dataReader["Estado"]);
                    ddduenio.apellidos = Convert.ToString(dataReader["Apellidos"]);
                    ddduenio.correo = Convert.ToString(dataReader["Correo"]);
                    ddduenio.telefono = Convert.ToString(dataReader["Telefono"]);
                    listaDuenio.Add(ddduenio);
                }
                dataReader.Close();
                sqlCon.Close();
                return listaDuenio;
            }
            catch (Exception ex)
            {
                log.Error("buscarCliente(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }
    }
}